package com.dkm.ec.so.repository.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

import com.dkm.base.api.model.Page;
import com.dkm.base.core.helper.SpringHelper;
import com.dkm.base.db.persistence.dao.IQueryDao;
import com.dkm.biz.repository.AbstractRepository;
import com.dkm.ec.so.domain.SoItem;
import com.dkm.ec.so.repository.SoItemRepository;
import com.dkm.ec.so.persistence.dao.SoItemQueryDao;
import com.dkm.ec.so.persistence.entity.SoItemPo;

/**
 * 对象功能:订单项目 Repository接口的实现类
 * 开发公司:dkm.com
 * 开发人员:ZHH
 * 创建时间:2017-05-19 15:51:37
 */
@Repository
public class SoItemRepositoryImpl extends AbstractRepository<String, SoItemPo,SoItem> implements SoItemRepository{
	  
	@Resource
	private  SoItemQueryDao soItemQueryDao;
	

	public SoItem newInstance() {
		SoItemPo po = new SoItemPo();
		SoItem soItem = SpringHelper.getBean(SoItem.class);
		soItem.setData(po);
		return soItem;
	}

	public SoItem newInstance(SoItemPo po) {
		SoItem soItem = SpringHelper.getBean(SoItem.class);
		soItem.setData(po);
		return soItem;
	} 
	
	@Override
	protected IQueryDao<String, SoItemPo> getQueryDao() {
		return soItemQueryDao;
	}

	@Override
	public List<SoItemPo> findByListByPartyId(String partyId,String soStatus) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("partyId", partyId);
		params.put("soStatus", soStatus);
		return soItemQueryDao.findByKey("findByListByPartyId", params);
	}

	@Override
	public List<SoItemPo> findBySoEntityId(String soEntityId) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("soEntityId", soEntityId);
		return soItemQueryDao.findByKey("findBySoEntityId", params);
	}

	@Override
	public List<SoItemPo> findByReturnEntity(String id, Page page) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("partyId", id);
		return soItemQueryDao.findByKey("findByReturnEntity", params,page);
	}

	@Override
	public List<SoItemPo> findByReturnEntityIng(String id, Page page) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("partyId", id);
		return soItemQueryDao.findByKey("findByReturnEntityIng", params,page);
	}

	@Override
	public SoItemPo findBySoItemId(String key) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("soItemId", key);
		List<SoItemPo> soItemPos = soItemQueryDao.findByKey("findBySoItemId",params);
		if(soItemPos.size() > 0){
			return soItemPos.get(0);
		}
		return null;
	}

	@Override
	public List<SoItemPo> findBySoEntityIdByIsReview(String soId) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("soId", soId);
	    return soItemQueryDao.findByKey("findBySoEntityIdByIsReview",params);
	}
}
